package org.batfish.representation.f5_bigip;

import javax.annotation.Nonnull;
import javax.annotation.ParametersAreNonnullByDefault;
import org.batfish.vendor.StructureUsage;

/** Named structure-usage types for F5 BIG-IP device */
@ParametersAreNonnullByDefault
public enum F5BigipStructureUsage implements StructureUsage {
  BGP_ADDRESS_FAMILY_REDISTRIBUTE_KERNEL_ROUTE_MAP(
      "bgp address-family redistribute kernel route-map"),
  BGP_NEIGHBOR_IPV4_ROUTE_MAP_IN("bgp neighbor address-family ipv4 route-map in"),
  BGP_NEIGHBOR_IPV6_ROUTE_MAP_IN("bgp neighbor address-family ipv6 route-map in"),
  BGP_NEIGHBOR_IPV4_ROUTE_MAP_OUT("bgp neighbor address-family ipv4 route-map out"),
  BGP_NEIGHBOR_IPV6_ROUTE_MAP_OUT("bgp neighbor address-family ipv6 route-map out"),
  BGP_NEIGHBOR_PEER_GROUP("neighbor peer-group"),
  BGP_NEIGHBOR_SELF_REFERENCE("bgp neighbor self-reference"),
  BGP_NEIGHBOR_UPDATE_SOURCE("bgp neighbor update-source"),
  BGP_PROCESS_SELF_REFERENCE("bgp process self-reference"),
  BGP_REDISTRIBUTE_CONNECTED_ROUTE_MAP("router bgp redistribute connected route-map"),
  BGP_REDISTRIBUTE_KERNEL_ROUTE_MAP("router bgp redistribute kernel route-map"),
  DATA_GROUP_EXTERNAL_SELF_REFERENCE("data-group external self-reference"),
  DATA_GROUP_INTERNAL_SELF_REFERENCE("data-group internal self-reference"),
  DEVICE_GROUP_DEVICE("device-group device"),
  HA_GROUP_POOL("ha-group pool"),
  HA_GROUP_TRUNK("ha-group trunk"),
  IMISH_INTERFACE_SELF_REFERENCE("IMISH interface self-reference"),
  INTERFACE_SELF_REFERENCE("interface self-reference"),
  MONITOR_DNS_DEFAULTS_FROM("monitor dns defaults-from"),
  MONITOR_GATEWAY_ICMP_DEFAULTS_FROM("monitor gateway-icmp defaults-from"),
  MONITOR_HTTP_DEFAULTS_FROM("monitor http defaults-from"),
  MONITOR_HTTPS_DEFAULTS_FROM("monitor https defaults-from"),
  MONITOR_HTTPS_SSL_PROFILE("monitor https ssl-profile"),
  MONITOR_LDAP_DEFAULTS_FROM("monitor ldap defaults-from"),
  MONITOR_TCP_DEFAULTS_FROM("monitor tcp defaults-from"),
  BGP_PEER_GROUP_ROUTE_MAP_IN("neighbor peer-group route-map in"),
  BGP_PEER_GROUP_ROUTE_MAP_OUT("neighbor peer-group route-map out"),
  OSPF_PASSIVE_INTERFACE("router ospf passive-interface"),
  OSPF_PROCESS_SELF_REFERENCE("router ospf self-reference"),
  PERSISTENCE_COOKIE_DEFAULTS_FROM("persistence cookie defaults-from"),
  PERSISTENCE_SOURCE_ADDR_DEFAULTS_FROM("persistence source-addr defaults-from"),
  PERSISTENCE_SSL_DEFAULTS_FROM("persistence ssl defaults-from"),
  POOL_MEMBER("pool member"),
  POOL_MONITOR("pool monitor"),
  PROFILE_ANALYTICS_DEFAULTS_FROM("profile analytics defaults-from"),
  PROFILE_CERTIFICATE_AUTHORITY_DEFAULTS_FROM("profile certificate-authority defaults-from"),
  PROFILE_CLASSIFICATION_DEFAULTS_FROM("profile classification defaults-from"),
  PROFILE_CLIENT_LDAP_DEFAULTS_FROM("profile client-ldap defaults-from"),
  PROFILE_CLIENT_SSL_DEFAULTS_FROM("profile client-ssl defaults-from"),
  PROFILE_DHCPV4_DEFAULTS_FROM("profile dhcpv4 defaults-from"),
  PROFILE_DHCPV6_DEFAULTS_FROM("profile dhcpv6 defaults-from"),
  PROFILE_DIAMETER_DEFAULTS_FROM("profile diameter defaults-from"),
  PROFILE_DNS_DEFAULTS_FROM("profile dns defaults-from"),
  PROFILE_FASTHTTP_DEFAULTS_FROM("profile fasthttp defaults-from"),
  PROFILE_FASTL4_DEFAULTS_FROM("profile fastl4 defaults-from"),
  PROFILE_FIX_DEFAULTS_FROM("profile fix defaults-from"),
  PROFILE_FTP_DEFAULTS_FROM("profile ftp defaults-from"),
  PROFILE_GTP_DEFAULTS_FROM("profile gtp defaults-from"),
  PROFILE_HTML_DEFAULTS_FROM("profile html defaults-from"),
  PROFILE_HTTP_DEFAULTS_FROM("profile http defaults-from"),
  PROFILE_HTTP2_DEFAULTS_FROM("profile http2 defaults-from"),
  PROFILE_HTTP_COMPRESSION_DEFAULTS_FROM("profile http-compression defaults-from"),
  PROFILE_HTTP_PROXY_CONNECT_DEFAULTS_FROM("profile http-proxy-connect defaults-from"),
  PROFILE_ICAP_DEFAULTS_FROM("profile icap defaults-from"),
  PROFILE_ILX_DEFAULTS_FROM("profile ilx defaults-from"),
  PROFILE_IPOTHER_DEFAULTS_FROM("profile ipother defaults-from"),
  PROFILE_IPSECALG_DEFAULTS_FROM("profile ipsecalg defaults-from"),
  PROFILE_MAP_T_DEFAULTS_FROM("profile map-t defaults-from"),
  PROFILE_MQTT_DEFAULTS_FROM("profile mqtt defaults-from"),
  PROFILE_NETFLOW_DEFAULTS_FROM("profile netflow defaults-from"),
  PROFILE_OCSP_STAPLING_PARAMS_DEFAULTS_FROM("profile ocsp-stapling-params defaults-from"),
  PROFILE_ONE_CONNECT_DEFAULTS_FROM("profile one-connect defaults-from"),
  PROFILE_PCP_DEFAULTS_FROM("profile pcp defaults-from"),
  PROFILE_PPTP_DEFAULTS_FROM("profile pptp defaults-from"),
  PROFILE_QOE_DEFAULTS_FROM("profile qoe defaults-from"),
  PROFILE_RADIUS_DEFAULTS_FROM("profile radius defaults-from"),
  PROFILE_REQUEST_ADAPT_DEFAULTS_FROM("profile request-adapt defaults-from"),
  PROFILE_REQUEST_LOG_DEFAULTS_FROM("profile request-log defaults-from"),
  PROFILE_RESPONSE_ADAPT_DEFAULTS_FROM("profile response-adapt defaults-from"),
  PROFILE_REWRITE_DEFAULTS_FROM("profile rewrite defaults-from"),
  PROFILE_RTSP_DEFAULTS_FROM("profile rtsp defaults-from"),
  PROFILE_SCTP_DEFAULTS_FROM("profile sctp defaults-from"),
  PROFILE_SERVER_LDAP_DEFAULTS_FROM("profile server-ldap defaults-from"),
  PROFILE_SERVER_SSL_DEFAULTS_FROM("profile server-ssl defaults-from"),
  PROFILE_SIP_DEFAULTS_FROM("profile sip defaults-from"),
  PROFILE_SMTPS_DEFAULTS_FROM("profile smtps defaults-from"),
  PROFILE_SOCKS_DEFAULTS_FROM("profile socks defaults-from"),
  PROFILE_SPLITSESSIONCLIENT_DEFAULTS_FROM("profile splitsessionclient defaults-from"),
  PROFILE_SPLITSESSIONSERVER_DEFAULTS_FROM("profile splitsessionserver defaults-from"),
  PROFILE_STATISTICS_DEFAULTS_FROM("profile statistics defaults-from"),
  PROFILE_STREAM_DEFAULTS_FROM("profile stream defaults-from"),
  PROFILE_TCP_DEFAULTS_FROM("profile tcp defaults-from"),
  PROFILE_TCP_ANALYTICS_DEFAULTS_FROM("profile tcp-analytics defaults-from"),
  PROFILE_TFTP_DEFAULTS_FROM("profile tftp defaults-from"),
  PROFILE_TRAFFIC_ACCELERATION_DEFAULTS_FROM("profile traffic-acceleration defaults-from"),
  PROFILE_UDP_DEFAULTS_FROM("profile udp defaults-from"),
  PROFILE_WEB_ACCELERATION_DEFAULTS_FROM("profile web-acceleration defaults-from"),
  PROFILE_WEB_SECURITY_DEFAULTS_FROM("profile web-security defaults-from"),
  PROFILE_WEBSOCKET_DEFAULTS_FROM("profile websocket defaults-from"),
  PROFILE_XML_DEFAULTS_FROM("profile xml defaults-from"),
  ROUTE_MAP_MATCH_IP_ADDRESS("route-map match ip address"),
  ROUTE_MAP_MATCH_IPV4_ADDRESS_PREFIX_LIST("route-map match ipv4 address prefix-list"),
  ROUTE_SELF_REFERENCE("route self-reference"),
  SELF_SELF_REFERENCE("self self-reference"),
  SELF_VLAN("self vlan"),
  SNAT_SELF_REFERENCE("snat self-reference"),
  SNAT_SNATPOOL("snat snatpool"),
  SNAT_VLANS_VLAN("snat vlans vlan"),
  SNATPOOL_MEMBERS_MEMBER("snatpool members member"),
  TRAFFIC_GROUP_HA_GROUP("traffic-group ha-group"),
  TRUNK_INTERFACE("trunk interfaces interface"),
  TRUST_DOMAIN_CA_DEVICE("trust-domain ca-device"),
  TRUST_DOMAIN_TRUST_GROUP("trust-domain trust-group"),
  VIRTUAL_DESTINATION("virtual destination"),
  VIRTUAL_PERSIST_PERSISTENCE("virtual persist persistence"),
  VIRTUAL_POOL("virtual pool"),
  VIRTUAL_PROFILE("virtual profile"),
  VIRTUAL_RULES_RULE("virtual rules rule"),
  VIRTUAL_SELF_REFERENCE("virtual self-reference"),
  VIRTUAL_SOURCE_ADDRESS_TRANSLATION_POOL("virtual source-address-translation pool"),
  VIRTUAL_VLANS_VLAN("virtual vlans vlan"),
  VLAN_INTERFACE("vlan interface");

  private final @Nonnull String _description;

  private F5BigipStructureUsage(String description) {
    _description = description;
  }

  @Override
  public @Nonnull String getDescription() {
    return _description;
  }
}
